########################################################################################
########################################################################################
########################################################################################
###############           UNIVERSIDADE FEDERAL DE PERNAMBUCO       #####################
###############             BHRENO HENRIQUE RIBEIRO VIEIRA         #####################
###############                ANALISE DE DADOS - 2019             #####################
###############                   PROF. DAVI MOREIRA               #####################
###############               "COMPARTILHAR, PARA GOVERNAR"        #####################
########################################################################################
########################################################################################

#### I Passo: definindo o Diretório ####
## Esta etapa consiste no direcionamento de onde os dados e informações que serão analisados pelo R, 
## está localizada no seu computador

setwd("C:/Users/Bhr/Desktop/AD-UFPE-2019-TRABALHO FINAL")

# confirmando a pasta que iremos trabalhar: 

getwd()

# observando o que há dentro da pasta:

dir()



#### II Passo: carregando os pacotes necessários para a realização das tarefas: ####

library(rio)
library(tidyverse)
library(RColorBrewer)
library(dotwhisker)
library(broom)
library(dplyr)
library(car)
library(gvlma)



#### III Passo: importando bases de dados: ####

bdcoalizao <- import("bhreno-vieira-ad-ufpe-2019-coalizao.xlsx")

#### IV Passo: conhecendo o banco de dados ####

dim(bdcoalizao)

names(bdcoalizao)

summary(bdcoalizao)

is.data.frame(bdcoalizao)

#### V Passo: trabalhando as variáveis: ####

## alterando nomeclatura das variáveis: 

bdcoalizao$Tipo <- factor(bdcoalizao$Tipo, labels = c("MP", "PL", "PLC", "PEC"),lev = c("Medida Provisória","Projeto de Lei","Projeto de Lei Complementar","Proposta de Emenda à Constituição"))




#### VI Passo: Gráficos Descritivos: ####

## tipo de proposição:

ggplot(bdcoalizao, aes(Tipo, fill = Tipo))+geom_bar()+scale_fill_brewer(palette = "Blues")+theme_minimal()
ggplot(bdcoalizao, aes(Tipo, fill = Tipo))+geom_bar()+scale_fill_brewer(palette = "Blues")+theme_minimal()+facet_grid(~Presidente)

## temas: 

bdcoalizao$Tema = factor(bdcoalizao$Tema, levels=names(sort(table(bdcoalizao$Tema), decreasing=TRUE)))
ggplot(bdcoalizao, aes(Tema, fill = Tema))+geom_bar(aes(y = (..count..)/sum(..count..)))+theme_minimal()+ylab("Porcentagem") + ggtitle("Agenda Legislativa (2015 - 2018)")+coord_flip()

## Agenda Por Presidente: 
ggplot(bdcoalizao, aes(Tema, fill = Tema))+geom_bar(aes(y = (..count..)/sum(..count..)))+theme_minimal()+ylab("Porcentagem") + ggtitle("Agenda Legislativa Rousseff e Temer")+coord_flip()+facet_grid(~Presidente)



#### VII Passo: filtrando a base para observar apenas os casos em que há informações sobre votação ####

bdcoalizao2 <- subset(bdcoalizao, Votacao == 1)

#### VIII Passo: indicando que as variáveis são númericas: ####

disciplina <- as.numeric(bdcoalizao2$Disciplina)
proporcionalidade <- as.numeric(bdcoalizao2$Proporcionalidade)
heterogeneidade <- as.numeric(bdcoalizao2$Heterogeinidade)
popularidade <- as.numeric(bdcoalizao2$Popularidade)
tamanho <- as.numeric(bdcoalizao2$Tamanho)
presidente <- as.character(bdcoalizao2$Presidente)
tema <- as.character(bdcoalizao2$Tema)
tipo <- as.character(bdcoalizao2$Tipo)

#### IX Passo: criando um novo banco com as informações: ####

## para simplificar a execução das regressões, obtei por criar um banco de dados menor,
## colocando apenas as variaveis necessárias

bdfinal <- data.frame(disciplina, proporcionalidade, heterogeneidade, popularidade, tamanho, presidente, tema, tipo)

## conhecendo a base:

dim(bdfinal)

names(bdfinal)

summary(bdfinal)

#### X Passo: Análise Exploratória dos Dados: ####

cor.test(bdfinal$proporcionalidade, bdfinal$disciplina)

ggplot(bdfinal, aes(proporcionalidade, disciplina))+geom_point()+theme_minimal()

ggplot(bdfinal, aes(proporcionalidade))+geom_density()+theme_minimal()
ggplot(bdfinal, aes(disciplina))+geom_density()+theme_minimal()
ggplot(bdfinal, aes(heterogeneidade))+geom_density()+theme_minimal()
ggplot(bdfinal, aes(tamanho))+geom_density()+theme_minimal()
ggplot(bdfinal, aes(popularidade))+geom_density()+theme_minimal()

#### XI Passo: modelos de regressão ####

## Modelo 1: vd - disciplina, vi - proporcionalidade ##

modelo1 <- lm(disciplina ~ proporcionalidade, data = bdfinal)
summary(modelo1)

plot(modelo1)

## Modelo 2: completo ##

modelo2 <- lm(disciplina ~ proporcionalidade + heterogeneidade + tamanho + popularidade, data = bdfinal)
summary(modelo2)

## gráfico da regressão multivariada:

dwplot(list(modelo1, modelo2),
  vline = geom_vline(xintercept = 0, colour = "grey60", linetype = 2)) %>% # plot line at zero _behind_ coefs
  relabel_predictors(c(proporcionalidade = "Coalescência",                       
                       heterogeneidade = "Heterogeneidade", 
                       tamanho = "Tamanho", 
                       popularidade = "Popularidade" 
                       )) +
  theme_minimal() + xlab("Intervalos de Compatibilidade") + ylab("") +
  geom_vline(xintercept = 0, colour = "grey60", linetype = 3) +
  ggtitle("Disciplina Partidária") +
  theme(plot.title = element_text(face="bold"),
        legend.position = c(0.007, 0.01),
        legend.justification = c(0, 0), 
        legend.background = element_rect(colour="grey80"),
        legend.title = element_blank()) 

## tabela de regressão:

screenreg(list(modelo1, modelo2))

#### XII Passo: Pressupostos do Modelo 1 ####
# Checar pressupostos do modelo1

## Pressuposto da media residual = 0 (ou próxima a 0)
mean(modelo1$residuals) # pressuposto OK!

## Pressupostos da Homocedasticidade
ncvTest(modelo1) # o p-valor foi maior que 0,05, ou seja, pressuposto OK!

# Pressuposto da Sem autocorrelacao
acf(modelo1$residuals) # pelo gráfico que saiu, creio que esteja OK!

# Pressuposto da Independência (Testing the Independence Assumption)
durbinWatsonTest(modelo1) # o p-valor foi maior que 0,05, ou seja, pressuposto OK!

# Pressuposto da variabilidade (The variability in X values is positive)
var(bdfinal$proporcionalidade) # esse nao pegou

# Pressuposto normalidade
qqnorm(modelo1$residuals) # OK!

# Checar pressupostos do modelo1

## Pressuposto da media residual = 0 (ou próxima a 0)
mean(modelo1$residuals) # pressuposto OK!

## Pressupostos da Homocedasticidade
library(car)
ncvTest(modelo1) # o p-valor foi maior que 0,05, ou seja, pressuposto OK!

# Pressuposto da Sem autocorrelacao
library(ggplot2)
acf(modelo1$residuals) # pelo gráfico que saiu, creio que esteja OK!

# Pressuposto da Independência (Testing the Independence Assumption)
durbinWatsonTest(modelo1) # o p-valor foi maior que 0,05, ou seja, pressuposto OK!

# Pressuposto da variabilidade (The variability in X values is positive)
var(bdcoalizao2$proporcional) # esse nao pegou


# Pressuposto normalidade
qqnorm(modelo1$residuals) # OK!



## outros testes:

gvlma::gvlma(modelo1) # esse comando checa os pressupostos automaticamente e 
# o teu modelo parece estar todo OK!




#### XIII Passo: Pressupostos do Modelo 2 ####
## Pressuposto da media residual = 0 (ou próxima a 0)
mean(modelo2$residuals) # pressuposto OK!

## Pressupostos da Homocedasticidade
ncvTest(modelo2) # o p-valor foi maior que 0,05, ou seja, pressuposto OK!

# Pressuposto da Sem autocorrelacao
acf(modelo2$residuals) # pelo gráfico que saiu, creio que esteja OK!

# Pressuposto da Independência (Testing the Independence Assumption)
durbinWatsonTest(modelo2) # o p-valor foi maior que 0,05, ou seja, pressuposto OK!

# Pressuposto da multicolinearidade
multiCol <- vif(modelo2) # deu certo agora
multiCol # todas as variaveis deram menor que 2, entao pressuposto OK!

# Pressuposto normalidade
qqnorm(modelo2$residuals) # OK!

#### das checagens dos pressupostos apenas 1 não funcionou: variabilidade
### recomendação: nao colocar esses dois, mas colocar esse aqui:

gvlma::gvlma(modelo2) # esse comando checa os pressupostos automaticamente e 
# o teu modelo parece estar todo OK!
# obs.: tem um pressuposto que parece ter sido violado, aih tu só reporta o resultado!
# nao precisa corrigir, acho que pode ficar assim, pq os outros que rodei parecem estar OK!


## Gráficos de Análise de Resíduos:

par(mfrow=c(2,2))

plot(modelo1)

plot(modelo2)

#### XIV Passo: Gráfico do Parlamento #### 

library(ggparliament)


cadeiras <- import("cadeiras55.xlsx")

names(cadeiras)

brasil <- parliament_data(cadeiras,
                          type = "semicircle", 
                          parl_rows = 11,
                          party_seats = cadeiras$seats)


deputados55 <- ggplot(brasil, aes(x, y, colour = party_short)) +
  geom_parliament_seats(size = 2) +
  labs(colour="Party") +  
  theme_ggparliament(legend = TRUE) + scale_colour_manual(values = brasil$colour, 
                                                          limits = brasil$party_short) 



deputados55
